import { baseURL } from "./config"
// export default function request(options) {
//     return new Promise((resolve, reject) => {
//         wx.request({
//           url: baseURL + options.url,
//           header: options.header || {},
//           method: options.method || 'get',
//           timeout: options.timeout || 60000,
//           data: options.data || {},
//           success: resolve,
//           fail: reject
//         })
//     })
// }

// 创建一个全局的请求函数
export default function (options) {
  const token = wx.getStorageSync('token');
  if (token) {
    options.header = options.header || {};
    options.header['Authorization'] = `Bearer ${token}`;
  }
  return new Promise((resolve, reject) => {
    wx.request({
      url: baseURL + options.url,
      header: options.header || {},
      method: options.method || 'get',
      timeout: options.timeout || 60000,
      data: options.data || {},
      success: (res) => {
          if (res.statusCode === 200) {
              resolve(res.data);
          } else if (res.statusCode === 401) {
              // Token 失效，进行登录获取新 token
              login().then(() => {
                // 当调用登录接口成功后，在这个then中处理登录成功的逻辑。
                // 在这里主要是将新获取的 token 存储到本地存储中，为后续的请求做好准备
                // 重新发送当前请求
                return request(options);
                // 是在重新发送之前因为 token 失效而中断的请求。
                // 当新 token 获取并存储成功后，再次调用最初的请求函数，以确保能够继续完成原本的业务逻辑。
              }).then((newRes) => {
                  resolve(newRes);
              }).catch((loginError) => {
                  reject(loginError);
              });
          } else {
            reject(res);
          }
      },
      fail: (err) => {
        reject(err);
      }
    });
  });
};

// 实现登录
// const login = function () {
//   return new Promise((resolve, reject) => {
//       wx.request({
//           url: 'https://your-login-api.com/login',
//           method: 'POST',
//           data: {
//               // 登录所需参数
//           },
//           success: (res) => {
//               if (res.statusCode === 200) {
//                   // 存储新的 token
//                   wx.setStorageSync('token', res.data.token);
//                   resolve();
//               } else {
//                   reject(res);
//               }
//           },
//           fail: (err) => {
//               reject(err);
//           }
//       });
//   });
// };

// 页面调用
// Page({
//   getData() {
//       request({
//           url: 'https://your-api.com/data',
//           method: 'GET'
//       }).then((data) => {
//           console.log('请求成功，数据为：', data);
//       }).catch((error) => {
//           console.log('请求失败：', error);
//       });
//   }
// });